public class MinimumOperationsToReduceXToZero {
    // 将x减到0的最小操作数  https://leetcode.cn/problems/minimum-operations-to-reduce-x-to-zero/description/
    public int minOperations(int[] nums, int x) {
        int ret=-1;//区间长度
        //遍历数组求元素和
        int sum=0;
        for(int i=0;i<nums.length;i++) {
            sum+=nums[i];
        }
        int target=sum-x;//目标区间元素和
        if(target<0) return -1;
        int tmp=0;//实际区间元素和
        for(int left=0,right=0;right<nums.length;right++) {
            tmp+=nums[right];
            while(tmp>target) {
                // 出窗口
                tmp-=nums[left++];
            }
            if(tmp==target) ret=Math.max(ret,right-left+1);//更新
        }
        if(ret==-1) {
            return ret;
        }
        return nums.length-ret;//操作次数=区间长度-区间长度
    }
}
